Obsidian 免费的实时同步服务 使用 fly.io 免费计划部署或自托管数据库,进行 LiveSync 插件的一系列配置后实现各设备间 Obsidian 实时增量修改同步,可以和官方同步服务相媲美。

前言

前两篇文章 Obsidian 各种同步方式体验Obsidian 使用 Webdav 同步分别讲了我在最初使用 Obisdian 时,使用的一些有点 “古早”🧐的同步方式的各种体验与自认为很方便的 Webdav 同步。它们很好,但是有着同步速度略慢,不能实时同步的缺点,但是,现在我发现了最新的、最舒服的 Obsidian 同步方式,那就是:花钱使用官方同步使用 LiveSync 插件进行同步。

这款插件的名字叫做:Self-hosted LiveSync,官方仓库在 Github 上。为什么叫做 LiveSync 呢?这是因为在我使用后发现完全可以实时同步😮。应该可以和官方的同步服务相媲美了吧?有区别的地方是需要一个 CouchDB 数据库进行读取写入数据。

注意⚠️:此插件与官方同步服务和 iCloud 不兼容,如果使用了官方同步服务就… 还有就是一些其他的同步插件如 Remote save 尽可能停止定时同步,防止出现两个插件同步冲突等奇奇怪怪的同步问题。此服务最大的特点是实时同步,并不能完全代替 Webdav 的备份功能。

你可以在任意平台或在自己服务器部署一个 CouchDB 数据库,然后可以直接跳过使用 fly.io 章节,直接阅读网页数据库配置。但是如果你是小白或没有设置服务器,那么请接着继续看,放宽心,步骤写的很详细🌟,一步步来就能完成。

@2022 年 10 月 5 日 目前又找到 IBM 提供免费 1GB 的 CouchDB 数据库,但是依然需要信用卡注册。

使用 fly.io

这次使用的是 fly.io 的免费计划,fly.io 是一个 SAAS(是(Platform as a Service)的缩写,是指平台即服务)平台,可以搭建如静态博客、Nextjs、Nuxtjs、Deno、Go、Python 等底层的各种各样的服务。但首先需要自己注册一个账号,这里可以直接使用 Github 登录。

注意:fly.io 的使用需要绑卡,如果没有绑卡会在创建应用章节出现 Error 提示。绑卡过程请在 fly.io 面板Billing 进行。正常使用国内的双币卡就可以,注意请如实填写信息。没有卡的朋友可以去各银行办一张(超好过的😗)或试试虚拟卡?(虚拟卡只是博主想到的一种方案,没有试过)

安装 flyctl

Windows 用户在本地打开 PowerShell 或 Windows 终端💻,输入:


注意:CMD 中不支持上面的命令,如果电脑中只有 CMD,或许你需要安装 PowerShell(选择 latest 版本)或 Windows 终端

本地登录

会自动打开浏览器进行验证账户操作。

创建应用

在本地任意位置创建一个 fly.io 的工作目录(其实就是创建个能找到的文件夹,你不会放桌面上了吧😂?)。

iwr https://fly.io/install.ps1 -useb | iex

进入 couchdb 目录后输入命令:


这一步将会启动一个向导,按自己的需求进行选择。

Select region 的意思是选择一个位置,尽量选择靠近自己的位置。

配置卷大小

我输入的配置卷大小命令为:

flyctl auth signup

nrt 的意思是东京地区,你需要改变为和上面选择的位置区域一样的位置代码。这一行命令的意思是:在东京地区创建一个 1G 大小的卷。

调整配置信息

打开应用根目录的 fly.toml 文件,添加或修改如下信息:

根目录为在创建应用章节中创建的新文件夹 couchdb

这是我修改的所有内容:


博主是全部配置完毕后写这篇文章的😎,所有可能有遗漏或一些错误?为了保证严谨性,把自己的配置全部贴一份做对照吧:

mkdir fly.io
cd fly.io
mkdir couchdb
cd couchdb

请对比上面提供的配置文件修改自己的 fly.toml 文件。

设置密码

在终端中输入命令:


注意:密码使用大小写字母与数字,不要使用特殊字符。实际测试后发现使用特殊字符时无法识别密码,会无法登录数据库。

如果想要修改密码,可以再次运行上面的命令。

部署

在终端中输入命令:

稍作等待后提示部署成功🎉。使用下面命令可以打开网页登录:

如果是 fly.io 部署,那么在网址后加 /_utils/#/setup,跳转后可以输入用户名与密码。

网页成功登录,好耶🎉

网页数据库配置

这一大章节都在网页中进行。如果不知道自己的地址,可以打开 fly.io 面板,点击自己的应用,Hostname 处为自己应用的网址。

创建数据库

点击右上角的 Create Database,创建一个数据库,Database name 为数据库名字,Partitioned不要勾选,然后点 Create 创建。

配置其他信息

打开 Setup 选项卡,填写相关信息。

第一行的 Specify your Admin credentials 为你在上面步骤中配置的用户信息。第二行的 Bind address the node will listen on 意思是监听的访问地址,设置为 0.0.0.0 为允许所有 ip 访问。第三行的 Port that the node will use 为你在调整配置信息这一步中的 fly.toml 文件中配置的端口,如果和我设置的一样,那这里应该是 5984😚。设置完成后会显示 Apache CouchDB is configured for production usage as a clustered node! Do you want to replicate data?,代表配置成功。

启用 CORS

然后打开 Configuration 选项卡中的 CORS 标签,启用 CORS。完成网页端操作!

Obsidian 设置

这一章节的操作都在 Obsidian 本体软件中进行。首先需要关闭 Obsidian 中的安全模式,在插件市场中搜索 Self-hosted LiveSync 下载并启用。在 Github 仓库中手动下载安装本插件可能会出现一些问题。

在移动端可能会打不开插件市场,是众所周知的网络原因,需要自己解决😑。

配置连接信息

打开 Remote Database configuration 选项卡。输入自己的数据库网址、用户名、密码与数据库名。

  1. 数据库网址 URIhttps://你的应用.fly.dev 的形式,如果找不到可以使用 flyctl open 或在 fly.io 面板中打开自己的应用查看 Hostname 项。
  2. 用户名密码为在调整配置信息时填写的用户名与在设置密码中用命令设置的密码。
  3. 数据库名为在创建数据库时创建的数据库名。

修复连接

点击 Test Database Connection,在右上角出现 Connect to 数据库名,则为连接成功。然后点击 Check database configuration,会出现一堆日志,逐个点击后面的 fix 按钮修复即可。

修复完成后重新点击 Check database configuration,没有出现 fix 按钮即为修复成功。

同步设置

打开 Sync Settings 选项卡,其中有所有的同步方式设置。注意:实时同步 (LiveSync) 与定时同步 (Periodic Sync) 互斥,无法同时打开。

可能有朋友会纠结用哪个,在这里强烈推荐使用 LiveSync(实时同步)方式,毕竟用此插件就是为了这个。因为 Periodic Sync(定时同步)中包含有 Sync on Save (保存时同步)、Sync on File Open (文件打开时同步)、Sync on Start (打开软件时同步) 各种选项,合计一下完全就是变相的实时同步嘛!第二点是当我使用 hugo server 开启本地博客变更监听后发现,Obsidian 会自动在输入文字后保存一次,造成频繁的 Sync on Save (保存时同步) 操作。所以,还是使用 LiveSync(实时同步)吧👍。

其他设置

Sync Settings 选项卡中还包含有 Use Trash for deleted files(删除文件到回收站)配置强烈建议打开,防止文件意外丢失。

Miscellaneous 选项卡(一个小扳手图标)中,有选项 Show staus inside editor(在编辑器右上角显示当前同步状态),推荐打开。

同步状态将显示在状态栏,状态都有:

信息解释:

安装于其他设备

在插件 Setup wizard 选项卡中,点击 Copy Setup URI,弹出的对话框输入你的数据库密码,即可复制当前的配置信息。在其他如 Android、iOS 设备上安装此插件并点击 Open Setup URI 输入复制的链接即可。

在这里选第一个,意思为将此设备设置为辅助或后续设备。稍等一会儿后即可同步完成。而且同步非常快,只需要几秒钟就好。

这里放一张官网的同步动态图可以感受一下。

排错日志

如果遇到问题,可以点击 Obsidian 左侧的 Show log 查看当前的日志信息。

冲突解决

@2022 年 10 月 5 日

写文章时可能会出现一些各设备同时编辑相同文章位置的冲突问题,Obsidian 会在各设备中自动弹出有冲突的地方。

这是 PC 端弹出的对话框。

这是 iPhone 端。这时只需要选择保留哪些内容就好,合并内容插件会自动解决。

推荐方案

值得注意的是,不应该在 Obsidian 中存放太多媒体文件,如:Markdown 文件直接引用本地图片或音频。不然会显著拖慢任何 WebDAV 或 LiveSync 的同步速度。做一个对比,我的 Obsidian 中大概有 80 篇左右笔记与博文,本地源文件只有 600KB,数据库占用只有 2MB 左右。如果使用本地引用图片,那么一张图片就能抵得上我全部笔记的大小,同步时间将成倍的增长🙄。所以,这些媒体文件更应该放入图床或对象存储中,使用 ![]() 的形式引用。

自建图床可以参考兰空图床,堂堂登场!,当然也可以使用各种免费的图床服务,但是这类服务通常情况下国内访问会有问题,并伴随着各类暂停服务、跑路等情况,这时你又需要修改文章图片引用路径,所以还是推荐自建或各云服务商的对象存储服务。博主😘使用 Picgo 中安装兰空图床插件的方案上传图片,如果你在手机上编辑文章也可以使用:Picgo 现在也发布了移动端。图片可以使用 Squoosh 全部优化为 Webp 格式,显著降低图片占用,访问更快速更友好🥰。

后记

fly.io 部署的服务体验太好了💖。Obsidian 各端同步起来非常快,虽然看面板只是一个 256MB 的小机器,但是这个任务完全可以胜任。fly.io 每个账户的免费资源包括:总共 3GB 的卷、最多 3 个共享 CPU-1x 256MB 虚拟机、每月 160GB 出站数据传输。看起来还能做一些新玩法的样子。在对比使用 Remotely save 同步后发现,同步速度除了快就是快,刚在电脑上写完一句话,想起有事情准备走,拿起手机打开 Obsidian,完全可以接着继续编辑,无缝同步的体验真是太棒了!我宣布这是 Obsidian 非官方同步服务的最佳方式

如果想看其他两篇有关 Obsidian 同步文章可以看 Obsidian 各种同步方式体验Obsidian 使用 Webdav 同步

全文完
本文由 简悦 SimpRead 转码,用以提升阅读体验,原文地址